package criterioOrden;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import model.Publicacion.Pregunta;
import model.criterio.criterioOrden.CriterioOrdenFecha;
import model.criterio.criterioOrden.Orden;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Before;
import org.junit.Test;

public class TestCriterioOrdenFecha {
	
	CriterioOrdenFecha c;
	Pregunta p;
	Pregunta p1;

	@Before
	public void setUp() throws Exception {
		c=new CriterioOrdenFecha(Orden.ASC);
		p=mock(Pregunta.class);
		p1=mock(Pregunta.class);
		
		
	}

	@Test
	public void testCompare() {
		when(p.getFecha()).thenReturn(DateTime.now());
		when(p1.getFecha()).thenReturn(DateTime.now());
		assertEquals(0, c.compare(p, p1));
		verify(p,times(1)).getFecha();
		verify(p1,times(1)).getFecha();
		when(p.getFecha()).thenReturn(new DateTime(2014, 10, 10, 0, 0,DateTimeZone.UTC));
		assertEquals(-1, c.compare(p, p1));
		
		when(p1.getFecha()).thenReturn(new DateTime(2014, 9, 10, 0, 0,DateTimeZone.UTC));
		assertEquals(1, c.compare(p, p1));
	}

}
